// 📜 main.go（使用示例）
package main

import (
	"fmt"
	"paymentsystem/payment"
)

func main() {
	// 初始化工厂
	factory := &payment.PaymentFactory{}

	// 基础配置（封装通用参数）[4](@ref)
	baseConfig := payment.Config{
		MerchantID: "M123456789",
		SecretKey:  "sk_test_123456",
		NotifyURL:  "https://api.yoursite.com/notify",
		IsSandbox:  true,
	}

	// 创建支付宝实例
	ali := factory.Create(payment.AlipayType, baseConfig, "APPID_123456")

	// 支付操作
	if result, err := ali.Pay(199.99); err == nil {
		fmt.Println("▶️" + result)
	}

	// 退款操作
	if refund, err := ali.Refund("ORDER_20230501123"); err == nil {
		fmt.Println("⏏️" + refund)
	}

	// 创建微信实例
	wechat := factory.Create(payment.WechatTYpe, baseConfig, "CERT_ABCDEF")

	// 支付操作
	if result, err := wechat.Pay(299.50); err == nil {
		fmt.Println("\n▶️" + result)
	}

	// 退款操作
	if refund, err := wechat.Refund("ORDER_20230504567"); err == nil {
		fmt.Println("⏏️" + refund)
	}
}
